@import "restyle";

@function shade-color($color) {
  @return (
          background-color: shade($color, 5%)
  );
}

$main-button-color: set-color(blue, eastern);
$button-text-color: set-color(white, base);

@include restyle-define(button, (
  // Button Component Variables
        restyle-var(active-animation-duration): 140ms,
        restyle-var(active-font-reduction): .95,
        restyle-var(active-text-color): set-color(white, base),
        restyle-var(animated-bg-active-color): restyle-var(main-color-active),
        restyle-var(animated-bg-active-opacity): 1,
        restyle-var(animated-bg-active-opacity-default): .2,
        restyle-var(animated-bg-hover-color): restyle-var(main-color-hover),
        restyle-var(animated-bg-hover-opacity): 1,
        restyle-var(animated-bg-hover-opacity-default): .1,
        restyle-var(animation-timing): cubic-bezier(0, 0, .2, 1),
        restyle-var(animation-timing-ease-in): cubic-bezier(.4, 0, 1, 1),
        restyle-var(background-color): restyle-var(main-color),
        restyle-var(disabled-bg-opacity): 1,
        restyle-var(disabled-box-shadow-opacity): null,
        restyle-var(disabled-opacity): .25,
        restyle-var(disabled-text-opacity): .7,
        //restyle-var(height): 32px,
        restyle-var(horizontal-padding): 16px,
        restyle-var(hover-animation-duration): 167ms,
        restyle-var(hover-text-color): set-color(white, base),
        restyle-var(font-size): 1.7rem,
        restyle-var(font-weight): 600,
        restyle-var(icon-animation-timing): restyle-var(animation-timing-ease-in),
        restyle-var(icon-left): 0,
        restyle-var(icon-margin): -12px 0 0 -6px,
        restyle-var(icon-padding): 0 6px 0 0,
        restyle-var(icon-position): relative,
        restyle-var(icon-size): 16px,
        restyle-var(icon-top-offset): 2px,
        restyle-var(is-round): false,
        restyle-var(main-color): set-color(blue, eastern),
        restyle-var(main-color-active): set-color(blue, eastern),
        restyle-var(main-color-hover): set-color(blue, eastern),
        restyle-var(normal-text-color): set-color(white, base),

        background-color: restyle-var(background-color),
        border: 0,
        border-radius: 2px,
        box-sizing: border-box,
        color: restyle-var(normal-text-color),
        cursor: pointer,
        display: inline-block,
        font-size: restyle-var(font-size),
        font-weight: restyle-var(font-weight),
        font-family: inherit,
        overflow: hidden,
        outline-width: 2px,
        padding: 0 restyle-var(horizontal-padding),
        position: relative,
        text-align: center,
        text-decoration: none,
        transition-duration: restyle-var(hover-animation-duration),
        transition-property: (background-color, box-shadow, color),
        transition-timing-function: restyle-var(animation-timing),
        vertical-align: middle,
        z-index: 0,

        '&:hover': (
                restyle-function(shade-color): restyle-var(background-color)
        ),
        '&:disabled': (
                cursor: not-allowed,
                opacity: restyle-var(disabled-opacity)
        ),

        restyle-modifiers: (
                'with a border': (
                        border: 1px solid restyle-var(main-color)
                ),
                small: (
                        restyle-var(font-size): 1.5rem,
                        restyle-var(height): 24px,
                        restyle-var(horizontal-padding): 16px,
                        restyle-var(icon-size): 16px,
                        restyle-var(icon-top-offset): 1px,
                        height: restyle-var(height),
                        line-height: restyle-var(height)
                ),
                medium: (
                  // Default
                        restyle-var(height): 32px,
                        height: restyle-var(height),
                        line-height: restyle-var(height)
                ),
                large: (
                        restyle-var(font-size): 1.7rem,
                        restyle-var(height): 40px,
                        restyle-var(horizontal-padding): 24px,
                        restyle-var(icon-margin): -12px 0 0 -4px,
                        restyle-var(icon-size): 24px,
                        restyle-var(icon-top-offset): 5px,
                        height: restyle-var(height),
                        line-height: restyle-var(height)
                ),
                x-large: (
                        restyle-var(font-size): 2.1rem,
                        restyle-var(height): 48px,
                        restyle-var(horizontal-padding): 32px,
                        restyle-var(icon-margin): -12px 0 0 -4px,
                        restyle-var(icon-size): 24px,
                        restyle-var(icon-top-offset): 5px,
                        restyle-var(font-weight): normal,
                        height: restyle-var(height),
                        line-height: restyle-var(height)
                ),
                primary: (
                  // This is the default.
                ),
                tertiary: (
                        restyle-var(active-text-color): restyle-var(main-color-active),
                        restyle-var(animated-bg-active-opacity): restyle-var(animated-bg-active-opacity-default),
                        restyle-var(animated-bg-hover-color): restyle-var(main-color-active),
                        restyle-var(animated-bg-hover-opacity): restyle-var(animated-bg-hover-opacity-default),
                        restyle-var(background-color): transparent,
                        restyle-var(disabled-opacity): null,
                        restyle-var(disabled-text-opacity): .4,
                        restyle-var(horizontal-padding): 8px,
                        restyle-var(hover-text-color): restyle-var(main-color-hover),
                        restyle-var(normal-text-color): restyle-var(main-color)

                ),
                secondary: (
                        restyle-var(active-text-color): restyle-var(main-color-active),
                        restyle-var(animated-bg-active-opacity): restyle-var(animated-bg-active-opacity-default),
                        restyle-var(animated-bg-hover-opacity): restyle-var(animated-bg-hover-opacity-default),
                        restyle-var(background-color): transparent,
                        restyle-var(box-shadow-size): inset 0 0 0 1px,
                        restyle-var(box-shadow-size-hover): inset 0 0 0 2px,
                        restyle-var(box-shadow-size-active): inset 0 0 0 3px,
                        restyle-var(disabled-box-shadow-opacity): restyle-var(disabled-text-opacity),
                        restyle-var(disabled-opacity): null,
                        restyle-var(disabled-text-opacity): .4,
                        restyle-var(hover-text-color): restyle-var(main-color-hover),
                        restyle-var(normal-text-color): restyle-var(main-color),
                        box-shadow: (
                                restyle-var(box-shadow-size) restyle-var(main-color),
                                restyle-var(box-shadow-size-hover) transparent,
                                restyle-var(box-shadow-size-active) transparent
                        )
                )
        )
));

.nacho-button {
  @include restyle(button);

  &--x-large {
    @include restyle(x-large button);
  }

  &--large {
    @include restyle(large button);
  }

  &--large-inverse {
    @include restyle(large button with a border);
  }

  &--small {
    @include restyle(small button);
  }

  &--secondary {
    @include restyle(secondary button);
  }

  &--secondary-inverse {
    @include restyle(secondary button with a border);
  }

  &--tertiary {
    @include restyle(tertiary button);
  }

  &--inverse {
    @include restyle(button with a border);
  }
}
